<?php
/*
 * 表情替换相关
 */
class Str_Face
{
	public static function convertFaces($str)
	{
		static $smilies;
		static $smilies_map;
		if (!$smilies_map)
		{
			list($smilies, $smilies_map) = self::get_smilies_map();
		}
		return str_replace($smilies, $smilies_map, $str);
	}

	public static function getFace($code)
	{
	    static $smiles;
	    if (empty($smiles))
	    {
	        $smiles = self::get_smilies();
	    }

	    if (0 == strncasecmp($code, '(#', 2))   //兼容旧模式. 2012.4月之后可以去掉;]
	    {
	        $pos =strrpos($code,')');
	        $pos = (false==$pos) ? strlen($code):$pos;
            $code = substr($code,2,$pos-2);
	    }

	    return isset($smiles[$code]) ? $smiles[$code] : $code;
	}

    public static function getFaceText($code)
    {
	    static $smiles;
	    if (empty($smiles))
	    {
	        $smiles = self::get_smilies();
	    }

	    if (0 == strncasecmp($code, '(#', 2))   //兼容旧模式. 2012.4月之后可以去掉;]
	    {
	        $pos =strrpos($code,')');
	        $pos = (false==$pos) ? strlen($code):$pos;
            $code = substr($code,2,$pos-2);
	    }

	    return isset($smiles[$code]) ? '//'.$code : $code;
	}

	/**
	 * 判断一个字符串是否以表情开头
	 */
	public static function isStartWithFace($str, $start, $strLen, &$face, &$faceLen)
	{
		static $smilies;
		static $smilies_map;

	    if ($strLen - $start < 4)
	    {
	        return false;   //str太短，不会是表情
	    }
        if ('/' != $str[$start] || '/' != $str[$start+1])
        {
            return false;   //仅支持 "//" 开头
        }

		if (!$smilies_map)
		{
    	    list($smilies, $smilies_map) = self::get_smilies_map();
    	}

    	$maxLen = min($strLen-$start, 12);
    	for ($i = 2; $i <= $maxLen; $i++)
    	{
    	    $tmpStr = substr($str, $start+2, $i);
    	    if ( in_array($tmpStr, $smilies) )
    	    {
    	        $face = $tmpStr;
    	        $faceLen = strlen($tmpStr) + 2;
    	        return true;
    	    }
    	}
	    return false;
	}

	public static function get_smilies_map()
	{
		$status_icon_arr = self::get_smilies();

		return array(array_keys($status_icon_arr), array_values($status_icon_arr));
	}

	public static function get_smilies()
	{
	    $status_icon_arr = array(
				'开心'=> '<img src="http://'.IMG_HOST.'/i/state/happy.gif" title="开心">',
				'哭泣'=> '<img src="http://'.IMG_HOST.'/i/state/cry.gif" title="哭泣">',
				'伤心'=> '<img src="http://'.IMG_HOST.'/i/state/sorrow.gif" title="伤心">',
				'愤怒'=> '<img src="http://'.IMG_HOST.'/i/state/angry.gif" title="愤怒">',
				'惊讶'=> '<img src="http://'.IMG_HOST.'/i/state/amazed.gif" title="惊讶">',
				'想你'=> '<img src="http://'.IMG_HOST.'/i/state/missyou.gif" title="想你">',
				'幸福'=> '<img src="http://'.IMG_HOST.'/i/state/happiness.gif" title="幸福">',
				'纠结'=> '<img src="http://'.IMG_HOST.'/i/state/tanglement_3.gif" title="纠结">',
				'囧'=> '<img src="http://'.IMG_HOST.'/i/state/daze.gif" title="囧">',
				'闭嘴'=> '<img src="http://'.IMG_HOST.'/i/state/shutup.gif" title="闭嘴">',
				'yy'=> '<img src="http://'.IMG_HOST.'/i/state/yy.gif" title="yy">',
				'亲亲'=> '<img src="http://'.IMG_HOST.'/i/state/kiss.gif" title="亲亲">',
				'色'=> '<img src="http://'.IMG_HOST.'/i/state/leer.gif" title="色">',
				'睡觉'=> '<img src="http://'.IMG_HOST.'/i/state/sleeping.gif" title="睡觉">',
				'大哭'=> '<img src="http://'.IMG_HOST.'/i/state/wail.gif" title="大哭">',
				'坏笑'=> '<img src="http://'.IMG_HOST.'/i/state/h_smile.gif" title="坏笑">',
				'偷笑'=> '<img src="http://'.IMG_HOST.'/i/state/titter.gif" title="偷笑">',
				'晕'=> '<img src="http://'.IMG_HOST.'/i/state/dizzy.gif" title="晕">',
				'抱抱'=> '<img src="http://'.IMG_HOST.'/i/state/hug3.gif" title="抱抱">',
				'鄙视'=> '<img src="http://'.IMG_HOST.'/i/state/despise.gif" title="鄙视">',
				'奋斗'=> '<img src="http://'.IMG_HOST.'/i/state/struggle.gif" title="奋斗">',
				'汗'=> '<img src="http://'.IMG_HOST.'/i/state/ashamed.gif" title="汗">',
				'哼'=> '<img src="http://'.IMG_HOST.'/i/state/hum.gif" title="哼">',
				'呕吐'=> '<img src="http://'.IMG_HOST.'/i/state/spit.gif" title="呕吐">',
				'抠鼻屎'=> '<img src="http://'.IMG_HOST.'/i/state/booger.gif" title="抠鼻屎">',
				'鼓掌'=> '<img src="http://'.IMG_HOST.'/i/state/clap.gif" title="鼓掌">',
				'馋'=> '<img src="http://'.IMG_HOST.'/i/state/greedy.gif" title="馋">',
				'害羞'=> '<img src="http://'.IMG_HOST.'/i/state/shy2.gif" title="害羞">',
				'可怜'=> '<img src="http://'.IMG_HOST.'/i/state/pity.gif" title="可怜">',
				'困'=> '<img src="http://'.IMG_HOST.'/i/state/sleepy.gif" title="困">',
				'怒骂'=> '<img src="http://'.IMG_HOST.'/i/state/curse.gif" title="怒骂">',
				'拜拜'=> '<img src="http://'.IMG_HOST.'/i/state/bye.gif" title="拜拜">',
				'糗大了'=> '<img src="http://'.IMG_HOST.'/i/state/shame.gif" title="糗大了">',
				'见钱眼开'=> '<img src="http://'.IMG_HOST.'/i/state/miser.gif" title="见钱眼开">',
				'书呆子'=> '<img src="http://'.IMG_HOST.'/i/state/bookworm2.gif" title="书呆子">',
				'嗯'=> '<img src="http://'.IMG_HOST.'/i/state/en.gif" title="嗯">',
				'委屈'=> '<img src="http://'.IMG_HOST.'/i/state/wronged.gif" title="委屈">',
				'抓狂'=> '<img src="http://'.IMG_HOST.'/i/state/crazy.gif" title="抓狂">',
				'砸头'=> '<img src="http://'.IMG_HOST.'/i/state/drophead.gif" title="砸头">',
				'翻白眼'=> '<img src="http://'.IMG_HOST.'/i/state/rollingeyes.gif" title="翻白眼">',
				'酷'=> '<img src="http://'.IMG_HOST.'/i/state/cool.gif" title="酷">',
				'烧香'=> '<img src="http://'.IMG_HOST.'/i/state/worship.gif" title="烧香">',
				'调皮'=> '<img src="http://'.IMG_HOST.'/i/state/naughty.gif" title="调皮">',
				'小可爱'=> '<img src="http://'.IMG_HOST.'/i/state/cute.gif" title="小可爱">',
				'阴险'=> '<img src="http://'.IMG_HOST.'/i/state/evillaugh.gif" title="阴险">',
				'嘘'=> '<img src="http://'.IMG_HOST.'/i/state/whispers.gif" title="嘘">',
				'疑问'=> '<img src="http://'.IMG_HOST.'/i/state/doubt.gif" title="疑问">',
				'呲牙'=> '<img src="http://'.IMG_HOST.'/i/state/baredteeth.gif" title="呲牙">',
				'眨眼'=> '<img src="http://'.IMG_HOST.'/i/state/wink.gif" title="眨眼">',
				'骷髅'=> '<img src="http://'.IMG_HOST.'/i/state/skull.gif" title="骷髅">',
				'握手'=> '<img src="http://'.IMG_HOST.'/i/state/shakehands.gif" title="握手">',
				'勾引'=> '<img src="http://'.IMG_HOST.'/i/state/seduce.gif" title="勾引">',
				'作揖'=> '<img src="http://'.IMG_HOST.'/i/state/bow.gif" title="作揖">',
				'赞扬'=> '<img src="http://'.IMG_HOST.'/i/state/praise_3.gif" title="赞扬">',
				'不咋地'=> '<img src="http://'.IMG_HOST.'/i/state/notye.gif" title="不咋地">',
				'胜利'=> '<img src="http://'.IMG_HOST.'/i/state/victory.gif" title="胜利">',
				'OK'=> '<img src="http://'.IMG_HOST.'/i/state/ok.gif" title="OK">',
				'绿色心情'=> '<img src="http://'.IMG_HOST.'/i/state/greenMood_3.gif" title="绿色心情">',
				'太阳'=> '<img src="http://'.IMG_HOST.'/i/state/sun_3.gif" title="太阳">',
				'彩虹'=> '<img src="http://'.IMG_HOST.'/i/state/rainbow.gif" title="彩虹">',
				'旅行'=> '<img src="http://'.IMG_HOST.'/i/state/travel_3.gif" title="旅行">',
				'浮云'=> '<img src="http://'.IMG_HOST.'/i/state/clouds.gif" title="浮云">',
				'充满爱心'=> '<img src="http://'.IMG_HOST.'/i/state/loving.gif" title="充满爱心">',
				'神马'=> '<img src="http://'.IMG_HOST.'/i/state/shorse.gif" title="神马">',
				'需要帮助'=> '<img src="http://'.IMG_HOST.'/i/state/help_3.gif" title="需要帮助">',
				'星星'=> '<img src="http://'.IMG_HOST.'/i/state/star.gif" title="星星">',
				'鸭梨'=> '<img src="http://'.IMG_HOST.'/i/state/pear.gif" title="鸭梨">',
				'音乐'=> '<img src="http://'.IMG_HOST.'/i/state/music_3.gif" title="音乐">',
				'下雨'=> '<img src="http://'.IMG_HOST.'/i/state/rain.gif" title="下雨">',
				'猪头'=> '<img src="http://'.IMG_HOST.'/i/state/pighead.gif" title="猪头">',
				'v5'=> '<img src="http://'.IMG_HOST.'/i/state/v5.gif" title="v5">',
				'创可贴'=> '<img src="http://'.IMG_HOST.'/i/state/woundplast.gif" title="创可贴">',
				'小汽车'=> '<img src="http://'.IMG_HOST.'/i/state/car_3.gif" title="小汽车">',
				'雪花'=> '<img src="http://'.IMG_HOST.'/i/state/snow_3.gif" title="雪花">',
				'月亮'=> '<img src="http://'.IMG_HOST.'/i/state/moon.gif" title="月亮">',
				'皇冠'=> '<img src="http://'.IMG_HOST.'/i/state/crown.gif" title="皇冠">',
				'生日蛋糕'=> '<img src="http://'.IMG_HOST.'/i/state/cake.gif" title="生日蛋糕">',
				'干杯'=> '<img src="http://'.IMG_HOST.'/i/state/cheers_3.gif" title="干杯">',
				'闪电'=> '<img src="http://'.IMG_HOST.'/i/state/thunder_1.gif" title="闪电">',
				'章鱼'=> '<img src="http://'.IMG_HOST.'/i/state/octopus.gif" title="章鱼">',
				'蘑菇'=> '<img src="http://'.IMG_HOST.'/i/state/mushroom.gif" title="蘑菇">',
				'熊宝宝'=> '<img src="http://'.IMG_HOST.'/i/state/toy2.gif" title="熊宝宝">',
				'悲剧'=> '<img src="http://'.IMG_HOST.'/i/state/cup.gif" title="悲剧">',
				'魅力四射'=> '<img src="http://'.IMG_HOST.'/i/state/glamorous.gif" title="魅力四射">',
				'足球'=> '<img src="http://'.IMG_HOST.'/i/state/football.gif" title="足球">',
				'相机'=> '<img src="http://'.IMG_HOST.'/i/state/camera.gif" title="相机">',
				'五道杠'=> '<img src="http://'.IMG_HOST.'/i/state/good_teenager.gif" title="五道杠">',
				'苹果'=> '<img src="http://'.IMG_HOST.'/i/state/apple.gif" title="苹果">',
				'画画'=> '<img src="http://'.IMG_HOST.'/i/state/paint_3.gif" title="画画">',
				'手套'=> '<img src="http://'.IMG_HOST.'/i/state/glove.gif" title="手套">',
				'玫瑰'=> '<img src="http://'.IMG_HOST.'/i/state/rose2.gif" title="玫瑰">',
				'凋谢'=> '<img src="http://'.IMG_HOST.'/i/state/languish.gif" title="凋谢">',
				'狗狗'=> '<img src="http://'.IMG_HOST.'/i/state/dog.gif" title="狗狗">',
				'猫咪'=> '<img src="http://'.IMG_HOST.'/i/state/cat.gif" title="猫咪">',
				'蜡烛'=> '<img src="http://'.IMG_HOST.'/i/state/candle.gif" title="蜡烛">',
				'钻石'=> '<img src="http://'.IMG_HOST.'/i/state/diamond.gif" title="钻石">',
				'冰鞋'=> '<img src="http://'.IMG_HOST.'/i/state/skate_3.gif" title="冰鞋">',
				'西瓜'=> '<img src="http://'.IMG_HOST.'/i/state/watermelon.gif" title="西瓜">',
				'礼物'=> '<img src="http://'.IMG_HOST.'/i/state/gift.gif" title="礼物">',
				'芳心'=> '<img src="http://'.IMG_HOST.'/i/state/heart.gif" title="芳心">',
				'心碎'=> '<img src="http://'.IMG_HOST.'/i/state/heartbreak.gif" title="心碎">',
				'咖啡'=> '<img src="http://'.IMG_HOST.'/i/state/coffee.gif" title="咖啡">',
				'药丸'=> '<img src="http://'.IMG_HOST.'/i/state/pills.gif" title="药丸">',
				'情书'=> '<img src="http://'.IMG_HOST.'/i/state/loveletter.gif" title="情书">',
				'吻'=> '<img src="http://'.IMG_HOST.'/i/state/kiss2.gif" title="吻">',
				'饭'=> '<img src="http://'.IMG_HOST.'/i/state/rice.gif" title="饭">',
				'便便'=> '<img src="http://'.IMG_HOST.'/i/state/faeces.gif" title="便便">',
				'萌'=> '<img src="http://'.IMG_HOST.'/i/state/meng.gif" title="萌">',
				'四叶草'=> '<img src="http://'.IMG_HOST.'/i/state/clover.gif" title="四叶草">',
				'草莓'=> '<img src="http://'.IMG_HOST.'/i/state/strawberry.gif" title="草莓">',
				'糖果'=> '<img src="http://'.IMG_HOST.'/i/state/sugar.gif" title="糖果">',
				'雨伞'=> '<img src="http://'.IMG_HOST.'/i/state/umbrella.gif" title="雨伞">',
				'冰淇淋'=> '<img src="http://'.IMG_HOST.'/i/state/ice-cream.gif" title="冰淇淋">',
				'糖葫芦'=> '<img src="http://'.IMG_HOST.'/i/state/tanghulu.gif" title="糖葫芦">',
				'棒棒糖'=> '<img src="http://'.IMG_HOST.'/i/state/lollipop.gif" title="棒棒糖">',
				'海豚'=> '<img src="http://'.IMG_HOST.'/i/state/dolphin.gif" title="海豚">',
				'金鱼'=> '<img src="http://'.IMG_HOST.'/i/state/goldfish.gif" title="金鱼">',
				'蝴蝶结'=> '<img src="http://'.IMG_HOST.'/i/state/bowknot.gif" title="蝴蝶结">',
				'仙人掌'=> '<img src="http://'.IMG_HOST.'/i/state/cactus.gif" title="仙人掌">',
				'落叶'=> '<img src="http://'.IMG_HOST.'/i/state/leaves.gif" title="落叶">',
				'吉他'=> '<img src="http://'.IMG_HOST.'/i/state/guitar.gif" title="吉他">',
				'恶魔'=> '<img src="http://'.IMG_HOST.'/i/state/devil.gif" title="恶魔">',
				'信号灯'=> '<img src="http://'.IMG_HOST.'/i/state/light.gif" title="信号灯">',
				'手机'=> '<img src="http://'.IMG_HOST.'/i/state/cellphone.gif" title="手机">',
				'收音机'=> '<img src="http://'.IMG_HOST.'/i/state/radio.gif" title="收音机">',
				'电视机'=> '<img src="http://'.IMG_HOST.'/i/state/tv.gif" title="电视机">',
				'扩音器'=> '<img src="http://'.IMG_HOST.'/i/state/megaphone.gif" title="扩音器">',
				'打针'=> '<img src="http://'.IMG_HOST.'/i/state/inject.gif" title="打针">',
				'铃铛'=> '<img src="http://'.IMG_HOST.'/i/state/bell.gif" title="铃铛">',
				'胶卷'=> '<img src="http://'.IMG_HOST.'/i/state/film.gif" title="胶卷">',
				'公文包'=> '<img src="http://'.IMG_HOST.'/i/state/briefcase.gif" title="公文包">',
				'一见钟情'=> '<img src="http://'.IMG_HOST.'/i/state/love.gif" title="一见钟情">',
				'高跟鞋'=> '<img src="http://'.IMG_HOST.'/i/state/gaogenxie.gif" title="高跟鞋">',
				'拖鞋'=> '<img src="http://'.IMG_HOST.'/i/state/slipper.gif" title="拖鞋">',
				'皮鞋'=> '<img src="http://'.IMG_HOST.'/i/state/leather-shoe.gif" title="皮鞋">',
				'靴子'=> '<img src="http://'.IMG_HOST.'/i/state/boot.gif" title="靴子">',
				'球鞋'=> '<img src="http://'.IMG_HOST.'/i/state/shoe.gif" title="球鞋">',
				'太阳帽'=> '<img src="http://'.IMG_HOST.'/i/state/sun-hat.gif" title="太阳帽">',
				'包包'=> '<img src="http://'.IMG_HOST.'/i/state/bag.gif" title="包包">',
				'比基尼'=> '<img src="http://'.IMG_HOST.'/i/state/bikini.gif" title="比基尼">',
				'衬衫'=> '<img src="http://'.IMG_HOST.'/i/state/shirt.gif" title="衬衫">',
				'裙子'=> '<img src="http://'.IMG_HOST.'/i/state/skirt.gif" title="裙子">',
				'戒指'=> '<img src="http://'.IMG_HOST.'/i/state/ring.gif" title="戒指">',
				'指甲油'=> '<img src="http://'.IMG_HOST.'/i/state/nail-polish.gif" title="指甲油">',
				'口红'=> '<img src="http://'.IMG_HOST.'/i/state/lipstick.gif" title="口红">',
				'圣诞帽'=> '<img src="http://'.IMG_HOST.'/i/state/christmas-hat.gif" title="圣诞帽">',
				'圣诞手套'=> '<img src="http://'.IMG_HOST.'/i/state/christmas-glove.gif" title="圣诞手套">',
				'圣诞袜子'=> '<img src="http://'.IMG_HOST.'/i/state/christmas-sock.gif" title="圣诞袜子">',
				'沙滩裤'=> '<img src="http://'.IMG_HOST.'/i/state/bench-pants.gif" title="沙滩裤">',
				'游泳'=> '<img src="http://'.IMG_HOST.'/i/state/swim.gif" title="游泳">',
			);
		return $status_icon_arr;
	}
}

?>